package top.guxx.mall.service;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import top.guxx.mall.domain.req.WeChatQrCodeReq;
import top.guxx.mall.domain.res.WeChatQrCodeRes;
import top.guxx.mall.domain.res.WeChatTokenRes;
import top.guxx.mall.domain.vo.WeChatTemplateMessageVO;

/**
 * @Author：Guxx
 * @Description：微信Api服务 retrofit2
 * @Date：2024/11/2 18:41
 * @Filename：IWeChatApiService
 */
public interface IWeChatApiService {

    /**
     *
     * @param grantType 获取access_token填写凭证、、client_credential
     * @param appId 第三方用户登录唯一凭证
     * @param appSecret 第三方用户唯一凭证密钥
     * @return
     */
    @GET("cgi-bin/token")
    Call<WeChatTokenRes> getToken(@Query("grant_type") String grantType,
                                  @Query("appid") String appId,
                                  @Query("secret") String appSecret);

    /**
     * 获取凭据 ticket
     * 文档：<a href="https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html">Generating_a_Parametric_QR_Code</a>
     * <a href="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET">前端根据凭证展示二维码</a>
     *
     * @param accessToken getToken 获取的 token 信息
     * @param weChatQrCodeReq 入参信息
     * @return
     */
    @POST("cgi-bin/qrcode/create")
    Call<WeChatQrCodeRes> createQRCode(@Query("access_token") String accessToken,
                                       @Body WeChatQrCodeReq weChatQrCodeReq);

    /**
     * 发送微信公众号模板消息
     * 文档：https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
     *
     * @param accessToken              getToken 获取的 token 信息
     * @param WeChatTemplateMessageVO 入参对象
     * @return 应答结果
     */
    @POST("cgi-bin/message/template/send")
    Call<Void> sendMessage(@Query("access_token") String accessToken, @Body WeChatTemplateMessageVO WeChatTemplateMessageVO);

}
